/**
 * Pacote descreve os dominios.
 */
package tipos;

/**
 * Classe que representa o domínio CodigoAeroporto.
 * @author Thiago Stuckert
 **/
public class CodigoAeroporto {
    /**
     * Constante que representa o tamanho maximo de um codigo de aeroporto.
     */
    private static final int TAM_CODIGO_AEROPORTO = 3;

    /**
     *  O método validar é responsável por validar um determinado Codigo de
     * Aeroporto.
     *
     *
     * @param codigoAeroporto Codigo que identifica o aeroporto.
     * lança uma exceção caso o codigo de aeroporto seja invalido.
     * @exception NullPointerException
     * @exception IllegalArgumentException
     */
     public static void validar(final String codigoAeroporto) {
        if (codigoAeroporto == null) {
            throw new NullPointerException("Codigo de Aeroporto nulo.");
        }
        if (codigoAeroporto.length() != TAM_CODIGO_AEROPORTO) {
            throw new IllegalArgumentException("Codigo de Aeroporto possui "
                    + "tamanho invalido.");
        }

        for (int i = 0; i < TAM_CODIGO_AEROPORTO; i++) {
            if (!Character.isLetter(codigoAeroporto.charAt(i))) {
                throw new IllegalArgumentException("Codigo de Aeroporto"
                        + " possui caracteres que nao sao letras.");
            }
        }
    }
}
